Streaming media is multimedia that is constantly received by, and normally presented to, an end-user (using a client) while it is being delivered by a streaming provider (using a server), and is contrasted with simply downloading a complete media file from a server to a client and playing the media file back after the download is complete. Several protocols exist for streaming media, including the Real-time Streaming Protocol (RTSP), Real-time Transport Protocol (RTP), and the Real-time Transport Control Protocol (RTCP), which are often used together. The Real Time Streaming Protocol (RTSP), developed by the Internet Engineering Task Force (IETF) and created in 1998 as Request For Comments (RFC) 2326, is a protocol for use in streaming media systems, which allows a client to remotely control a streaming media server, issuing VCR-like commands such as “play” and “pause”, and allowing time-based access to files on a server. RTP is usually used in conjunction with RTCP. While RTP carries the media streams (e.g., audio and video) or out-of-band signaling (dual-tone multi-frequency (DTMF)), RTCP is used to monitor transmission statistics and quality of service (QoS) information. RTCP gathers statistics on a media connection and information such as bytes sent, packets sent, lost packets, jitter, feedback, and round trip delay. An application may use this information to increase the quality of service, perhaps by limiting flow or using a different codec or bit rate.
Streaming media is often accessed through a web browser. Contemporary browsers and other applications allow plug-ins, which in general comprise hosted software code that interacts with the hosting browser/application to provide additional functionality. One reason for using plug-ins is to increase security, because the hosting browser limits the actions that the hosted code (which is generally untrusted) can perform. The Internet has become very dangerous, with malicious websites often attempting to cause a user to download and run harmful code that may damage the user's computer system or destroy the user's data. Thus, web browsers often include restrictions on the code that can run, and the plug-ins that are allowed to perform actions on the user's computer system. Plug-ins increase the size of the sandbox provided by the browser, because they allow more functionality on the web while decreasing the number of untrusted applications installed. One such plug-in is Microsoft® Silverlight™, which provides a platform that allows application developers to create rich web applications hosted in the browser that typically include animation, vector graphics, and/or media (e.g., audio/video) content playback. Newer web applications may make use of feature-rich web plug-ins like Microsoft Silverlight to build rich applications that are nearly or more functional than their desktop counterparts.
Bandwidth is often a concern when streaming media over the web for access in a web browser or other client application as is reducing cost with caching. To reduce bandwidth, streaming media may be encoded and packaged in various format designed to reduce bandwidth. One such format is multi-bitrate encoding. Multi-bitrate encoding is a method of encoding a particular media presentation at multiple bitrates (e.g., 300 kbps and 600 kbps) at a server and allowing a client (or server) to choose an appropriate bitrate for the client. For example, a client with a fast, high bandwidth connection will likely select the highest bitrate available to deliver the highest quality picture on the client, while a client with a slow, low bandwidth connection will likely select a lower bitrate that the client can receive fast enough for streaming to avoid glitches. Sometimes automatic methods are used (at the client or server) to dynamically tune the bitrate received by a particular client, sometimes referred to as adaptive streaming. In addition to the client's connection, other activities of the client may act to limit the resources available for receiving streaming media, and adaptive streaming may take into account various factors to select a suitable bitrate for the client at a given time. With adaptive streaming, the bitrate requested by the client can change at any time during the presentation, adapting to suit current conditions.
Although adaptive streaming and multi-bitrate streams work well for a single streaming media presentation between a server and client, problems arise when a client accesses multiple multi-bitrate presentations (or streams) and performs adaptive streaming on the presentations at the same time. There are many reasons a client may want to access multiple streams. For example, the client may be watching multiple camera angles of a single live event, or the client may be viewing supplementary information related to a main presentation (e.g., historical footage related to what a speaker in another presentation is talking about). As an example of the problems that arise, imagine that a client computer's resources begin to become constrained (the particular resource is irrelevant, though it could be CPU, network bandwidth, graphical processing resources, and so forth), so that the client is having difficulty playing all of the existing media presentations at the currently selected bitrates. If all of the streams switch to a lower bitrate, the client will receive lower quality across all of the streams, which may be an overcorrection based on the actual scope of the resource shortage. In worse cases, one stream may overtake another that is more relevant to the user (e.g., a picture-in-picture stream overtaking the main picture stream). As one stream consumes more resources based on that stream's adaptive streaming decisions, other streams may back off to avoid exceeding the available resources. This may be undesirable, particularly where one presentation is higher priority to a user of the client computer than another presentation.